widget: Drop the destroy vfunc
authorMatthias Clasen <mclasen@redhat.com>
Tue, 5 May 2020 20:59:31 +0000 (16:59 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 5 May 2020 22:25:29 +0000 (18:25 -0400)
We still emit the ::destroy signal, but if you
want a vfunc, use dispose.

gtk/gtkwidget.c
gtk/gtkwidget.h

index 8ee76a263d82edfc690ccfb9842508b1f75d4a01..5325c19bfc5b07c93e73d21fb0b16ea93f5e1860 100644 (file)
@@ -570,8 +570,8 @@ static void gtk_widget_get_property          (GObject           *object,
                                                  GValue            *value,
                                                  GParamSpec        *pspec);
 static void    gtk_widget_dispose               (GObject           *object);
-static void    gtk_widget_real_destroy          (GtkWidget         *object);
 static void    gtk_widget_finalize              (GObject           *object);
+static void     gtk_widget_real_destroy          (GtkWidget         *object);
 static void    gtk_widget_real_show             (GtkWidget         *widget);
 static void    gtk_widget_real_hide             (GtkWidget         *widget);
 static void    gtk_widget_real_map              (GtkWidget         *widget);
@@ -902,8 +902,6 @@ gtk_widget_class_init (GtkWidgetClass *klass)
   gobject_class->set_property = gtk_widget_set_property;
   gobject_class->get_property = gtk_widget_get_property;
 
-  klass->destroy = gtk_widget_real_destroy;
-
   klass->activate_signal = 0;
   klass->show = gtk_widget_real_show;
   klass->hide = gtk_widget_real_hide;
@@ -1360,7 +1358,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
     g_signal_new (I_("destroy"),
                   G_TYPE_FROM_CLASS (gobject_class),
                   G_SIGNAL_RUN_CLEANUP | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
-                  G_STRUCT_OFFSET (GtkWidgetClass, destroy),
+                  0,
                   NULL, NULL,
                   NULL,
                   G_TYPE_NONE, 0);
@@ -7197,6 +7195,7 @@ gtk_widget_dispose (GObject *object)
       priv->in_destruction = TRUE;
       g_signal_emit (object, widget_signals[DESTROY], 0);
       priv->in_destruction = FALSE;
+      gtk_widget_real_destroy (widget);
     }
 
   sizegroups = _gtk_widget_get_sizegroups (widget);
index 631547484fa4aabc150bc37b1503ed90079652f1..7352eded9a402d451c60c945abe618356a69dbf1 100644 (file)
@@ -135,8 +135,6 @@ struct _GtkWidget
  * @activate_signal: The signal to emit when a widget of this class is
  *   activated, gtk_widget_activate() handles the emission.
  *   Implementation of this signal is optional.
- * @destroy: Signals that all holders of a reference to the widget
- *   should release the reference that they hold.
  * @show: Signal emitted when widget is shown
  * @hide: Signal emitted when widget is hidden.
  * @map: Signal emitted when widget is going to be mapped, that is
@@ -214,7 +212,6 @@ struct _GtkWidgetClass
   guint activate_signal;
 
   /* basics */
-  void (* destroy)             (GtkWidget        *widget);
   void (* show)                (GtkWidget        *widget);
   void (* hide)                (GtkWidget        *widget);
   void (* map)                 (GtkWidget        *widget);